---
title: "kCube Corona Virus Map"
output:
flexdashboard::flex_dashboard:
orientation: rows
social: menu
source_code: embed
vertical_layout: fill
---
```{r setup, include=FALSE}
#------------------ Data ------------------
library(flexdashboard)
library(nCov2019)
library(usethis)
library(devtools)
library(forcats)
library(ggplot2)
library(maps)
library(magrittr)
library(xml2)
library(rvest)
library(RCurl)
library(flexdashboard)
library(data.table)
library(RInno)
library(leaflet)
library(leafpop)
library(purrr)
URL_Deaths <- getURL("https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_19-covid-Deaths.csv")
data_Deaths <- read.csv(text = URL_Deaths, stringsAsFactors = FALSE)
lapply(1:ncol(data_Deaths), function(i){
if(all(is.na(data_Deaths[, i]))){
data_Deaths <<- data_Deaths[, -i]
return(print(paste("Column", names(data_Deaths)[i], "is missing", sep = " ")))
} else {
return(NULL)
}
})
df_conf <- data_Deaths[, 1:4]
for(i in 5:ncol(data_Deaths)){
data_Deaths[,i] <- as.integer(data_Deaths[,i])
# data_Deaths[,i] <- ifelse(is.na(data_Deaths[, i]), 0 , data_Deaths[, i])
print(names(data_Deaths)[i])
if(i == 5){
df_conf[[names(data_Deaths)[i]]] <- data_Deaths[, i]
} else {
df_conf[[names(data_Deaths)[i]]] <- data_Deaths[, i] - data_Deaths[, i - 1]
}
}
df_conf1 <- df_conf %>% tidyr::pivot_longer(cols = dplyr::starts_with("X"),
names_to = "date_temp",
values_to = "cases_temp")
# Parsing the date
df_conf1$month <- sub("X", "",
strsplit(df_conf1$date_temp, split = "\\.") %>%
purrr::map_chr(~.x[1]) )
df_conf1$day <- strsplit(df_conf1$date_temp, split = "\\.") %>%
purrr::map_chr(~.x[2])
df_conf1$date <- as.Date(paste("2020", df_conf1$month, df_conf1$day, sep = "-"))
# Aggregate the data to daily
Deaths <- df_conf1 %>%
dplyr::group_by(Province.State, Country.Region, Lat, Long, date) %>%
dplyr::summarise(cases = sum(cases_temp)) %>%
dplyr::ungroup() %>%
dplyr::mutate(type = "death",
Country.Region = trimws(Country.Region),
Province.State = trimws(Province.State))
URL_Recovered <- getURL("https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_19-covid-Recovered.csv")
data_Recovered <- read.csv(text = URL_Recovered, stringsAsFactors = FALSE)
lapply(1:ncol(data_Recovered), function(i){
if(all(is.na(data_Recovered[, i]))){
data_Recovered <<- data_Recovered[, -i]
return(print(paste("Column", names(data_Recovered)[i], "is missing", sep = " ")))
} else {
return(NULL)
}
})
df_conf <- data_Recovered[, 1:4]
for(i in 5:ncol(data_Recovered)){
data_Recovered[,i] <- as.integer(data_Recovered[,i])
# data_Recovered[,i] <- ifelse(is.na(data_Recovered[, i]), 0 , data_Recovered[, i])
print(names(data_Recovered)[i])
if(i == 5){
df_conf[[names(data_Recovered)[i]]] <- data_Recovered[, i]
} else {
df_conf[[names(data_Recovered)[i]]] <- data_Recovered[, i] - data_Recovered[, i - 1]
}
}
df_conf1 <- df_conf %>% tidyr::pivot_longer(cols = dplyr::starts_with("X"),
names_to = "date_temp",
values_to = "cases_temp")
# Parsing the date
df_conf1$month <- sub("X", "",
strsplit(df_conf1$date_temp, split = "\\.") %>%
purrr::map_chr(~.x[1]) )
df_conf1$day <- strsplit(df_conf1$date_temp, split = "\\.") %>%
purrr::map_chr(~.x[2])
df_conf1$date <- as.Date(paste("2020", df_conf1$month, df_conf1$day, sep = "-"))
# Aggregate the data to daily
Recovered <- df_conf1 %>%
dplyr::group_by(Province.State, Country.Region, Lat, Long, date) %>%
dplyr::summarise(cases = sum(cases_temp)) %>%
dplyr::ungroup() %>%
dplyr::mutate(type = "recovered",
Country.Region = trimws(Country.Region),
Province.State = trimws(Province.State))
URL_Confirmed <- getURL("https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_19-covid-Confirmed.csv")
data_Confirmed <- read.csv(text = URL_Confirmed, stringsAsFactors = FALSE)
lapply(1:ncol(data_Confirmed), function(i){
if(all(is.na(data_Confirmed[, i]))){
data_Confirmed <<- data_Confirmed[, -i]
return(print(paste("Column", names(data_Confirmed)[i], "is missing", sep = " ")))
} else {
return(NULL)
}
})
df_conf <- data_Confirmed[, 1:4]
for(i in 5:ncol(data_Confirmed)){
data_Confirmed[,i] <- as.integer(data_Confirmed[,i])
# data_Confirmed[,i] <- ifelse(is.na(data_Confirmed[, i]), 0 , data_Confirmed[, i])
print(names(data_Confirmed)[i])
if(i == 5){
df_conf[[names(data_Confirmed)[i]]] <- data_Confirmed[, i]
} else {
df_conf[[names(data_Confirmed)[i]]] <- data_Confirmed[, i] - data_Confirmed[, i - 1]
}
}
df_conf1 <- df_conf %>% tidyr::pivot_longer(cols = dplyr::starts_with("X"),
names_to = "date_temp",
values_to = "cases_temp")
# Parsing the date
df_conf1$month <- sub("X", "",
strsplit(df_conf1$date_temp, split = "\\.") %>%
purrr::map_chr(~.x[1]) )
df_conf1$day <- strsplit(df_conf1$date_temp, split = "\\.") %>%
purrr::map_chr(~.x[2])
df_conf1$date <- as.Date(paste("2020", df_conf1$month, df_conf1$day, sep = "-"))
# Aggregate the data to daily
Confirmed <- df_conf1 %>%
dplyr::group_by(Province.State, Country.Region, Lat, Long, date) %>%
dplyr::summarise(cases = sum(cases_temp)) %>%
dplyr::ungroup() %>%
dplyr::mutate(type = "confirmed",
Country.Region = trimws(Country.Region),
Province.State = trimws(Province.State))
# Bind Data
coronavirus <- rbind(Confirmed, Recovered, Deaths)
```
Map
=======================================================================
```{r}
cv_data_for_plot <- coronavirus %>%
dplyr::filter(cases > 0) %>%
dplyr::group_by(Country.Region,Province.State,Lat,Long,type) %>%
dplyr::summarise(cases = sum(cases)) %>%
dplyr::mutate(log_cases = 2 * log(cases)) %>%
dplyr::ungroup()
cv_data_for_plot.split <- cv_data_for_plot %>% split(cv_data_for_plot$type)
pal <- colorFactor(c("orange", "red","green"), domain = c("confirmed", "death","recovered"))
map_object <- leaflet() %>% addProviderTiles(providers$CartoDB.DarkMatter)
names(cv_data_for_plot.split) %>%
purrr::walk( function(df) {
map_object <<- map_object %>%
addCircleMarkers(data=cv_data_for_plot.split[[df]],
lng=~Long, lat=~Lat,
# label=~as.character(cases),
color = ~pal(type),
stroke = FALSE,
fillOpacity = 0.8,
radius = ~log_cases,
popup = leafpop::popupTable(cv_data_for_plot.split[[df]],
feature.id = FALSE,
row.numbers = FALSE,
zcol=c("type","cases","Country.Region","Province.State")),
group = df,
# clusterOptions = markerClusterOptions(removeOutsideVisibleBounds = F),
labelOptions = labelOptions(noHide = F,
direction = 'auto'))
})
map_object %>%
addLayersControl(
overlayGroups = names(cv_data_for_plot.split),
options = layersControlOptions(collapsed = FALSE)
)
```
Data
=======================================================================
```{r}
coronavirus %>%
dplyr::select(Date = date, Province = Province.State, Country = Country.Region, `Case Type` = type, `Number of Cases` = cases) %>%
DT::datatable(rownames = FALSE,
options = list(searchHighlight = TRUE,
pageLength = 20), filter = 'top')
```